// process 是Nodejs操作当前进程和控制当前进程的API，并且是挂载到globalThis下面的全局API
// 跟os下的一样
console.log(process.arch)      // cpu架构，架构不一样，指令集不一样
console.log(process.platform)  // 系统平台
// argv 返回数组
console.log(process.argv);  // 命令启动的整条指令， 包括后缀
/*
node index.js
[
  'C:\\Program Files\\nodejs\\node.exe',        
  'F:\\web-practice\\node\\node-study\\index.js'
]
node index.js --version
[    
  'C:\\Program Files\\nodejs\\node.exe',
  'F:\\web-practice\\node\\node-study\\index.js',
  '--version'
]
*/
// cwd() 获取工作目录， 类似 __dirname,  在esm模式下，__dirname属性是用不了的，可以用cwd代替一下
console.log(process.cwd());  

// memoryUsage()   获取当前进程的内存使用情况
console.log(process.memoryUsage());
/*
{
  rss: 30597120,         // 常驻集大小，物理内存的存量。这是进程当前占用的物理内存量，不包括共享内存和页面缓存。它反映了进程实际占用的物理内存大小
  heapTotal: 6438912,   // V8给我们分配的堆内存的总量， 包括未使用的内存， 堆区总大小 这是 V8 引擎为 JavaScript 对象分配的内存量
  heapUsed: 5762016,   // 已使用的堆内存大小
  external: 445505,    // 外部内存使用量 这部分内存不是由 Node.js 进程直接分配的，而是由其他 C/C++ 对象或系统分配的
  arrayBuffers: 17606  // 二进制总量， 是用于处理二进制数据的对象类型，它使用了 JavaScript 中的 ArrayBuffer 接口。这个属性显示了当前进程中 ArrayBuffers 的数量
}
*/

// exit() 退出当前进程

// setTimeout(() => {
//   process.exit()
// }, 2000)
// process.on('exit', () => {
//   console.log("进程退出了");
// })

// kill 杀死进程，需要传进程id的参数 pid
// process.kill(process.pid)        // 获取进程id，可以用 process.id获取

// env 环境变量， 用的最多的
// 获取操作系统所有的环境变量, 可以修改，但修改后只会在当前进程中生效，不会真正影响系统的环境变量
console.log(process.env);

// 作用：区分生产环境，开发环境 ，装一个插件 cross-env
// 然后在 package.json里的脚本添加命令快捷指令
// "dev": "cross-env NODE_ENV=dev node index.js"
// "build": "cross-env NODE_ENV=prod node index.js"
// 根据 NODE_ENV去判断
console.log(process.env.NODE_ENV == 'dev' ? '开发环境' : '生产环境');

// cross-dev是根据系统使用不同命令设置环境变量，windows系统用SET设置环境变量，posix 使用export命令设置环境变量
// set NODE_ENV=production  #windows
// export NODE_ENV=production #posix